Embodiments of the present invention relate to software reuse, and more particularly relate to techniques for reusing logic implemented in an existing software application in the context of a Web service.
Over the years, many enterprises have invested significant resources in developing and/or deploying business applications that rely on specific application technologies. Examples of such application technologies include Oracle Forms and Oracle Applications Framework (both developed by Oracle Corporation), Java Server Pages (JSP), and the like. Now, there is a growing trend in the IT industry towards integrating the functionalities of these business applications via a loosely-coupled, service-oriented architecture (SOA). To realize this goal, there is a need to expose the business logic implemented in these existing business applications as new Web services.
Unfortunately, the nature of many application technologies makes it difficult to reuse program code written via these technologies in a Web service context. For example, applications built using Oracle Forms (hereinafter “Forms”) or Oracle Applications Framework (hereinafter “OAF”) are typically self-contained entities with limited capability for exposing the business logic implemented therein to external consumers. In addition, the business logic in Forms or OAF-based applications is often tied to user interface components specific to those technologies, thus making it difficult to reuse this logic in a generic manner.
One method for addressing the difficulties above is to re-factor a portion of the program code for an existing application into an alternative format that can be more easily exposed as a Web service. For example, in the case of a Forms-based application, business logic implemented within the form can be re-written as one or more PL/SQL APIs, which can then be directly invoked by a Web service. However, this approach involves the creation and maintenance of two parallel code lines (e.g., the Forms-based application and the PL/SQL APIs), thus requiring significant development time and effort. If a large number of existing applications need to re-factored in this manner, this approach may not be practical or feasible.
Another method for addressing the difficulties above is to completely convert/migrate the existing application to an alternative application technology that is more amenable to the generation of component Web services. Using this method, a Forms-based application may, for example, be converted into a Java/J2EE-based implementation. However, this approach also requires a significant amount of development resources. In addition, the complete, componentized conversion of all business logic within the existing application would not be guaranteed because the aim of this approach is the conversion of existing application code, rather than the reuse of that code.
Accordingly, it would be desirable to have techniques that allow existing application logic to be reused for new Web services without any need for modifying or re-factoring existing code.